Entidades puras (Warehouse, Shelf)
Enums: ShelfType, WarehouseFamily
Sin anotaciones de JPA ni Spring
Interfaces que definen casos de uso (WarehouseUseCase)
Permite desacoplar los controladores
Interfaces como WarehouseRepositoryPort
Representan lo que el dominio necesita del exterior (DB, APIs)
Clases como WarehouseService que implementan los casos de uso definidos en port.input
Solo conocen interfaces del dominio
Controladores REST (WarehouseController)
Solo dependen de WarehouseUseCase (nunca acceden a repos directamente)
Manejo de DTOs, validaciones, excepciones
Entidades JPA (WarehouseEntity, ShelfEntity)
Repositorios Spring Data (SpringWarehouseRepository)
Mapeadores (WarehouseMapper)
Adaptadores que implementan WarehouseRepositoryPort
Beans manuales (para servicios sin anotaciones Spring)
Configuraci贸n de mappers, seguridad, profiles (application-{profile}.yml)
Configuraci贸n de Swagger, Jackson, etc.
| Beneficio | Descripci贸n |
|---|---|
| 馃摝 Modularidad | Cambios en una capa no afectan otras. |
| 馃И Testabilidad | Dominios y casos de uso se prueban sin dependencias. |
| 馃攲 Sustituibilidad | Puedes cambiar adaptadores sin tocar el dominio (por ej. cambiar JPA por Mongo). |
| 馃摎 Claridad | Entrevistadores ven tus conocimientos en dise帽o y arquitectura. |
| 馃殌 Mantenibilidad | Ideal para escalar la soluci贸n y mantenerla a largo plazo. |